package com.thread.thread;

/**
 * @author wangyingjie
 * @date
 * @remark
 */
public class MyRunnable implements Runnable {

    private int i;

    //线程体
  @Override
    public void run() {
        for (; i < 100; i++) {
            System.out.println(Thread.currentThread().getName()+"===> "+i);
        }
    }

    public static void main(String[] args) throws InterruptedException {
        for (int i = 0; i < 50; i++) {
            System.out.println(Thread.currentThread().getName()+"===> "+i);
            if (i == 20) {
                //调用start()说明线程已经准备就绪，什么时候被调用取决于底层平台，具有随机性
                MyRunnable myRunnable = new MyRunnable();
                new Thread(myRunnable,"线程1").start();//线程0
                new Thread(myRunnable,"线程2").start();//线程1
                //直接调用run()方法等于当前直接执行该方法，而不会开新的线程，一个线程按顺序执行2次run方法，打印的是对象名
//                new MyThread().run();//线程0
//                new MyThread().run();//线程0
                Thread.sleep(1L);//当i==20的时候，main线程沉睡，因为2条子线程已经准备就绪，CPU又不会空闲，所以子线程会准确从20开始执行
            }
        }
    }
}
